package com.swan.test.auto;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;

/** swan 日志配置
 * @author zongf
 * @since 2022-11-07
 **/
@Slf4j
@ConfigurationProperties(prefix = "swan.log")
@Data
public class SwanLogProperty implements InitializingBean {

    /** 参数最大长度 */
    private Integer argMaxLength;

    /** 日志最大长度 */
    private Integer maxLength;

    /** 超长后缀，默认为:... */
    private String overrideSuffix = "...";

    /** 日志存放目录 */
    private String dir;

    /** custom.log 最多保留文件个数，按小时切割，每天24个文件*/
    private Integer maxCustomFiles;

    /** error.log 最多保留文件个数，按天切割，一天一个文件*/
    private Integer maxErrorFiles;

    /** 日志追加类型 */
    private AppenderType[] appenderTypes;

    @Override
    public void afterPropertiesSet() throws Exception {
        log.info("日志配置:{}", this);
    }


    public enum AppenderType {

        /** 控制台输出 */
        CONSOLE("console"),

        /** 写入文件 */
        FILE("file"),

        /** 事件广播 */
        EVENT("event")
        ;

        private String type;

        AppenderType(String type) {
            this.type = type;
        }

        @Override
        public String toString() {
            return this.type;
        }
    }
}
